// self 代表子进程本身
self.importScripts("/spark-md5.min.js"); // 导入脚本  注册到self对象里了吗
// 生成文件hash
self.onmessage = e =>{
    const {fileChunkList} = e.data;
    const spark = new self.SparkMD5.ArrayBuffer();
    let percentage = 0;
    let count = 0;
    const loadNext = index =>{
        // 创建fileReader对象读取文件切片 这个md5要全部切片接收完才能算出一个hash值
        const reader = new FileReader(); 
        reader.readAsArrayBuffer(fileChunkList[index].file);
        reader.onload = e =>{
            count++;
            spark.append(e.target.result);
            if(count === fileChunkList.length){
                self.postMessage({
                    percentage:100,
                    hash:spark.end()
                });
                self.close();
            }else{
                percentage += 100 / fileChunkList.length;
                self.postMessage({
                    percentage
                });
                // count是递增条件和跳入下一个关键
                loadNext(count)
            }
        }
    }
    loadNext(0);
}
